package A_review.review4_21;

import listNodePractice.reverseListNode.review4_19.reverseListNode;

class ListNode{
    public  int val;
   public  ListNode next;
   public ListNode(int val, ListNode next){
       this.val=val;
       this.next=next;
   }
}

public class ReverseListNode {

    public ListNode traverse(ListNode  head){
//        if (head==null){
//            return null;
//        }
        if (head.next==null){
            return head;
        }
        //  CKG TODO 2023/4/21: 往上跳脱一层去看
        ListNode last = traverse(head.next);
        head.next.next=head;
        //  CKG TODO 2023/4/21:  这一块我写错了 写成了 head.next=last;
        head.next=null;
        return last;
    }
//  CKG TODO 2023/4/21: 记录后继节点
 ListNode  successor=null;
    public ListNode traverse(ListNode  head,int n){
       if (n==1){
           successor=head.next;
           return head;
       }
//  CKG TODO 2023/4/21: 这样子得到的就是翻转后的头节点
        ListNode temp = traverse(head.next, n-1 );
       head.next.next=head;
       head.next=successor;
        return temp;
    }


    public ListNode traverse(ListNode  head,int m,int n){
        if (m==1){
            //  CKG TODO 2023/4/21:  实现翻转   有一点不理解诶
//            ListNode last = traverse(head.next, n);
            return  traverse(head, n);
        }
//        while (m>1){

        head.next = traverse(head.next, m - 1, n - 1);

//        }
        return head;
    }


    public static void main(String[] args) {


        reverseListNode reverseListNode = new reverseListNode();
        listNodePractice.ListNode listNode1 = new listNodePractice.ListNode(1);
        listNodePractice.ListNode listNode2 = new listNodePractice.ListNode(2);
        listNodePractice.ListNode listNode3 = new listNodePractice.ListNode(3);
        listNodePractice.ListNode listNode4 = new listNodePractice.ListNode(4);
        listNodePractice.ListNode listNode5 = new listNodePractice.ListNode(5);
        listNode1.next=listNode2;
        listNode2.next=listNode3;
        listNode3.next=listNode4;
        listNode4.next=listNode5;
    }





}
